<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\common\services\system\log;

use app\common\dao\system\log\SystemLoginLogDao;
use app\common\services\BaseServices;

/**
 * Class：系统登录日志服务
 * 创建人：Jack
 * 创建时间：2024/1/12 15:07
 * @package app\services\system\log
 */
class SystemLoginLogServices extends BaseServices
{
    /**
     * 构造函数
     * @param SystemLoginLogDao $dao
     */
    public function __construct(SystemLoginLogDao $dao)
    {
        $this->dao = $dao;
    }

    /**
     * 注释：登录日志列表
     * 创建人：Jack
     * 创建时间：2024/1/12 15:18
     * @param array $where
     * @return array
     */
    public function getLoginLogList(array $where)
    {
        if ($where && isset($where['time'])) {
            $where['timeKey'] = 'login_time';
        }
        [$page, $limit] = $this->getPageValue();
        $list = $this->dao->getList($where, $page, $limit);
        $count = $this->dao->count($where);
        foreach ($list as &$item) {
            $item['ip_data'] = $item['ip'] ? $this->convertIp($item['ip']) : '';
            $item['login_time'] = date('Y-m-d H:i:s', $item['login_time']);
        }

        return compact('list', 'count');
    }

    /**
     * 注释：记录登录日志
     * 创建人：Jack
     * 创建时间：2023/7/29 17:31
     * @param int    $admin_id
     * @param int    $status
     * @param string $ip
     * @return bool
     */
    public function recordLoginLog(int $admin_id, int $status = 0, string $ip = '')
    {
        $data = [
            'admin_id' => $admin_id,
            'status' => $status,
            'ip' => $ip,
            'login_time' => time()
        ];
        if (!$this->dao->save($data)) {
            return false;
        }
        return true;
    }

    /**
     * 注释：获取指定条件下的条数
     * 创建人：Jack
     * 创建时间：2023/3/23 10:23
     * @param array $where
     * @return int
     */
    public function getCount(array $where)
    {
        return $this->dao->count($where);
    }
}
